package com.hcy.manager;

import com.hcy.driver.dto.request.BaseInfoRequestDTO;
import com.hcy.driver.dto.request.DriverCarInfoRequestDTO;
import com.hcy.driver.dto.response.DriverCarInfoResponseDTO;
import com.hcy.manager.dto.request.*;
import com.hcy.manager.dto.response.*;
import com.hcy.rabbitbasicmodel.dto.MyPage;
import com.hcy.rabbitbasicmodel.model.ResponseData;
import com.hcy.rabbitbasicmodel.signl.Add;
import com.hcy.rabbitbasicmodel.signl.Delete;
import com.hcy.rabbitbasicmodel.signl.Query;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

import java.util.List;

/**
 * @Author huchenying
 * @Description
 * @Date 2022/4/27 1:59
 **/
@FeignClient(name = "common-api")
public interface ManagerDriverCarInfoClient {
    @PostMapping("/managerDriver/getDriverList")
    ResponseData<MyPage<DriverInfoResponseDTO>> getDriverList(@Validated(Query.class) @RequestBody DriverInfoRequestDTO requestDTO);

    @PostMapping("/managerDriver/cancelSig")
    ResponseData<Object> cancelSig(@Validated(Delete.class) @RequestBody DriverInfoRequestDTO requestDTO);

    @PostMapping("/managerDriver/addOrUpdateDriverInfo")
    ResponseData<DriverInfoDetailsResponseDTO> addOrUpdateDriverInfo(@Validated @RequestBody DriverInfoAddRequestDTO requestDTO);

    @PostMapping("/managerDriver/getDriverDetails")
    ResponseData<DriverInfoDetailsResponseDTO> getDriverDetails(@Validated(Delete.class) @RequestBody DriverInfoRequestDTO requestDTO);

    @PostMapping("/managerCar/getCarList")
    ResponseData<MyPage<CarInfoResponseDTO>> getCarList(@Validated(Query.class) @RequestBody CarInfoRequestDTO requestDTO);

    @PostMapping("/managerCar/updateCarStatus")
    ResponseData<Object> updateCarStatus(@Validated(Delete.class) @RequestBody CarInfoRequestDTO requestDTO);

    @PostMapping("/managerCar/insertOrUpdateCar")
    ResponseData<CarInfoResponseDTO> insertOrUpdate(@Validated @RequestBody CarInfoAddRequestDTO requestDTO);

    @PostMapping("/managerCar/getCarTypeList")
    ResponseData<List<CarTypeResponseDTO>> getCarTypeList();

    @PostMapping("/managerCar/insertOrUpdateCarType")
    ResponseData<CarTypeResponseDTO> insertOrUpdateCarType(@Validated(Add.class) @RequestBody CarTypeRequestDTO requestDTO);

    @PostMapping("/managerCar/deleteCarType")
    ResponseData<Object> deleteCarType(@Validated(Delete.class) @RequestBody CarTypeRequestDTO requestDTO);

    @PostMapping("/managerCar/getCarLevelList")
    ResponseData<List<CarLevelResponseDTO>> getCarLevelList();

    @PostMapping("/managerCar/insertOrUpdateCarLevel")
    ResponseData<CarLevelResponseDTO> insertOrUpdateCarLevel(@Validated(Add.class) @RequestBody CarLevelRequestDTO requestDTO);

    @PostMapping("/managerCar/deleteCarLevel")
    ResponseData<Object> deleteCarLevel(@Validated(Delete.class) @RequestBody CarLevelRequestDTO requestDTO);

    @PostMapping("/homeData/getNewCarsDrivers")
    ResponseData<HomeCarAndDriverDTO> getNewCarsDrivers();

}
